package version;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 封装
 * Mysql封装工具类：链接对应数据库
 * Mysql与Oracle具备：url、username、password
 * 所有数据库公用的定义为属性
 * 2.getParam(String 路径)获取参数方法：链接成功数据库操作
 * 2.1外置文件【url、账号、密码】统一配置文件中【形式：键值对】
 *    db_mysql.properties
 * */
public class Mysql {
//定义数据库基本属性：私有化静态属性    类直接调取属性
    private static String url;
    private static String username;
    private static String password;
    //2.定义方法：链接成功数据库
    public static void getParam(String fileName) throws IOException {
        //2.1读取db_mysql.properties文件--Properties类读取文件键和值
        Properties p=new Properties();
        //2.1[补充2]低级流--搬运数据--传入fileName
        //Mysql.class 表示当前Mysql类的Class对象
        //理解：图书馆---mysql书籍区域----找管理员---找到对应【db.mysql.properties】书籍
        //getClassLoader()获取当前类的加载器【加载器：根据路径执行配置文件】
        //getResourceAsStream()通过类的加载器，找到对应的文件，配合读取
        InputStream fis=
                Mysql.class.getClassLoader().getResourceAsStream(fileName);
        //2.1[补充1]Properties类提供load()方法：必须传入流--低级流--搬运数据
        p.load(fis);
        //2.2从db.mysql.properties读取的键值对信息
        // 赋值给当前Mysql的数据库的基本信息[url、用户、密码]
        //Properties类提供方法getProperty("键")通过键值对
        url= p.getProperty("url");
        username= p.getProperty("username");
        password= p.getProperty("password");
        //2.3打桩测试是否链接成功
        System.out.println("数据库基本信息："+url+username+password);
        //3.测试工具类--链接成功数据库【外置文件--配置Mysql基本信息】
    }
    public static void main(String[] args) throws IOException, SQLException {
     Mysql.getParam("db_mysql.properties");
        Connection con=DriverManager.getConnection(url,username,password);
        //2.执行sql 增
        String ist="insert into book values(6,'余华','活着',1314,'18世纪',30,'是')";
        Statement st=con.createStatement();
        int rows=st.executeUpdate(ist);
        System.out.println(rows);
        //删
        String de="delete from book where id=6";
        int se=st.executeUpdate(de);
        System.out.println(se);
        //改
        String up="update book set name='卧底' where id=6";
        int ste=st.executeUpdate(up);
        System.out.println(ste);
        //3
        String sql="select * from book";
        ResultSet rs=st.executeQuery(sql);
        while (rs.next()){
            int id=rs.getInt("id");
            String author=rs.getString("author");
            String name=rs.getString("name");
            int price=rs.getInt("price");
            String date=rs.getString("date");
            int number=rs.getInt("number");
            String discount=rs.getString("discount");
            System.out.println(id+author+name+price+date+number+discount);
        }
        st.close(); con.close(); rs.close();
    }
}
